Jest একটি অত্যন্ত জনপ্রিয় JavaScript testing framework যা unit testing, integration testing, এবং snapshot testing সহ বিভিন্ন ধরনের টেস্টিং সমর্থন করে। Jest, Facebook দ্বারা তৈরি, এবং এটি React অ্যাপ্লিকেশনগুলির জন্য ব্যাপকভাবে ব্যবহৃত হয়, তবে এটি JavaScript অ্যাপ্লিকেশনের অন্যান্য অংশেও ব্যবহৃত হতে পারে। Jest এর সহজ ব্যবহারের কারণে এটি অনেক ডেভেলপারদের পছন্দের টেস্টিং ফ্রেমওয়ার্ক।
এখানে আমরা Unit Testing এবং Integration Testing করার জন্য Jest ব্যবহার করার পদ্ধতি বিস্তারিতভাবে দেখাবো।
১. Unit Testing with Jest
Unit Testing হল একটি নির্দিষ্ট কোড ইউনিট (যেমন একটি ফাংশন, মেথড, অথবা ক্লাস) এর সঠিকতা পরীক্ষা করার প্রক্রিয়া। এটি সাধারণত খুব ছোট অংশের কোড পরীক্ষা করে এবং এতে সাধারণত বাইরের ডিপেন্ডেন্সি (API কল, ডেটাবেস ইত্যাদি) ব্যবহার করা হয় না।
Unit Test Example:
ধরা যাক, আমাদের একটি ফাংশন আছে যা দুটি সংখ্যা যোগ করবে:
// sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;এখন, আমরা Jest ব্যবহার করে এই ফাংশনের ইউনিট টেস্ট লিখব।
// sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
test('adds negative numbers correctly', () => {
expect(sum(-1, -2)).toBe(-3);
});
test('adds 0 + 0 to equal 0', () => {
expect(sum(0, 0)).toBe(0);
});ব্যাখ্যা:
test()হল Jest এর টেস্টিং ফাংশন, যেখানে প্রথম প্যারামিটার হচ্ছে টেস্টের নাম এবং দ্বিতীয় প্যারামিটার হচ্ছে একটি কলব্যাক ফাংশন যা আসল টেস্টিং লজিককে ধারণ করে।expect()হল Jest এর matcher ফাংশন, যা সত্য এবং মিথ্যা যাচাই করে।toBe()হল একটি matcher যা পরীক্ষা করে যে আসল মানটি প্রত্যাশিত মানের সমান কিনা।
Unit Testing Run:
আপনি Jest টেস্ট চালানোর জন্য টার্মিনালে নিচের কমান্ড ব্যবহার করতে পারেন:
npx jestএটি আপনার সব টেস্ট রান করবে এবং টেস্টের ফলাফল দেখাবে।
২. Integration Testing with Jest
Integration Testing হল বিভিন্ন কোড ইউনিটের সমন্বয়ে পুরো সিস্টেমের অংশ পরীক্ষা করা। এই পরীক্ষায় বিভিন্ন মডিউল বা ফাংশন একসাথে কাজ করছে কিনা তা পরীক্ষা করা হয়। সাধারণত এটি ব্যাকএন্ড API, ডাটাবেস এবং UI এর ইন্টিগ্রেশন চেক করে।
Integration Test Example:
ধরা যাক, আমাদের একটি ফাংশন আছে যা একটি API কল করে এবং ডাটাবেস থেকে তথ্য নিয়ে আসে। আমরা চাই যাতে API এবং ডাটাবেসের ইন্টিগ্রেশন সঠিকভাবে কাজ করে।
// fetchData.js
const axios = require('axios');
async function fetchData(url) {
try {
const response = await axios.get(url);
return response.data;
} catch (error) {
throw new Error('Error fetching data');
}
}
module.exports = fetchData;এখন, আমরা Jest এর মাধ্যমে এই API কলের ইন্টিগ্রেশন টেস্ট লিখবো। এই টেস্টে আমরা mocking ব্যবহার করব, যাতে প্রকৃত API কল না হয় এবং আমরা mocked response ব্যবহার করতে পারি।
// fetchData.test.js
const axios = require('axios');
const fetchData = require('./fetchData');
// Mocking axios.get method
jest.mock('axios');
test('fetches successfully data from API', async () => {
// Mock response data
axios.get.mockResolvedValue({ data: 'some data' });
const result = await fetchData('https://api.example.com/data');
expect(result).toBe('some data');
});
test('fetches data with error', async () => {
// Mock error
axios.get.mockRejectedValue(new Error('Error fetching data'));
await expect(fetchData('https://api.example.com/data')).rejects.toThrow('Error fetching data');
});ব্যাখ্যা:
- Mocking: আমরা
jest.mock()ব্যবহার করেছিaxiosএরget()মেথডটি মক করতে, যাতে প্রকৃত API কল না হয় এবং একটি mocked response বা mocked error প্রদান করা হয়। - mockResolvedValue(): এটি একটি মক ফাংশন যা resolved promise ফেরত দেয়।
- mockRejectedValue(): এটি একটি মক ফাংশন যা rejected promise ফেরত দেয়, সাধারণত error handling এর জন্য।
Integration Testing Run:
এই টেস্টও আপনি npx jest কমান্ডের মাধ্যমে রান করতে পারেন।
Mocking External Modules
এখানে axios এর মত বাইরের লাইব্রেরি বা মডিউলগুলোকে মক করার জন্য Jest mocking ব্যবহার করা হয়। আপনি যখন external dependencies যেমন API কল বা ডাটাবেস কোডের সঙ্গে কাজ করবেন, তখন মকিং করা খুবই গুরুত্বপূর্ণ, কারণ এতে আপনি real server বা network request ছাড়াই শুধু লজিক পরীক্ষা করতে পারবেন।
Mocking Example:
jest.mock('axios');এই কমান্ডটি axios এর সব মেথড মক করবে, যাতে আপনি আপনার টেস্টে মক রেসপন্স বা মক ত্রুটি ব্যবহার করতে পারেন।
Conclusion
- Unit Testing: একক ফাংশন বা কোড ইউনিটের সঠিকতা যাচাই করা। এতে বাইরের ডিপেন্ডেন্সি বা ইন্টিগ্রেশন ব্যবহার করা হয় না।
- Integration Testing: একাধিক কোড ইউনিট বা সিস্টেমের সমন্বয়ে কাজ করার সময় সঠিকভাবে কাজ করছে কিনা তা যাচাই করা। এখানে বাইরের সেবা বা API এর সঙ্গে ইন্টিগ্রেশন পরীক্ষা করা হয়।
- Jest একটি শক্তিশালী এবং সহজ টেস্টিং টুল যা
mockingএবংsnapshot testingএর মত ফিচার সহ খুব কার্যকরী।
Jest ব্যবহারে আপনি unit এবং integration testing খুব সহজেই করতে পারবেন এবং আপনার অ্যাপ্লিকেশনের কোডের সঠিকতা নিশ্চিত করতে পারবেন।
Read more